#ifndef _NVIC_HW_H_
#define _NVIC_HW_H_

#include "soc.h"

typedef struct {
	_RW ISER[8U];               /*!< Offset: 0x000 Interrupt Set Enable Register */
	_NU RESERVED0[24U];
	_RW ICER[8U];               /*!< Offset: 0x080 Interrupt Clear Enable Register */
	_NU RESERVED1[24U];
	_RW ISPR[8U];               /*!< Offset: 0x100 Interrupt Set Pending Register */
	_NU RESERVED2[24U];
	_RW ICPR[8U];               /*!< Offset: 0x180 Interrupt Clear Pending Register */
	_NU RESERVED3[24U];
	_RW IABR[8U];               /*!< Offset: 0x200 Interrupt Active bit Register */
	_NU RESERVED4[56U];
	volatile uint8_t IP[240U];  /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */
	_NU RESERVED5[644U];
	_OR STIR;                   /*!< Offset: 0xE00 Software Trigger Interrupt Register */
} NVIC_Struct;

extern NVIC_Struct SOC_NVIC;

#endif /* _NVIC_HW_H_ */
